<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Mongodb\V20190725\Models;
use TencentCloud\Common\AbstractModel;

/**
 * DescribeInstanceParams response structure.
 *
 * @method array getInstanceEnumParam() Obtain Collection of parameters whose values are of the Enum type.
 * @method void setInstanceEnumParam(array $InstanceEnumParam) Set Collection of parameters whose values are of the Enum type.
 * @method array getInstanceIntegerParam() Obtain Collection of parameters whose values are of the Integer type.
 * @method void setInstanceIntegerParam(array $InstanceIntegerParam) Set Collection of parameters whose values are of the Integer type.
 * @method array getInstanceTextParam() Obtain Collection of parameters whose values are of the Text type.
 * @method void setInstanceTextParam(array $InstanceTextParam) Set Collection of parameters whose values are of the Text type.
 * @method array getInstanceMultiParam() Obtain Collection of parameters whose values are of different types.
 * @method void setInstanceMultiParam(array $InstanceMultiParam) Set Collection of parameters whose values are of different types.
 * @method integer getTotalCount() Obtain Number of modifiable parameters supported by the current instance.
 * @method void setTotalCount(integer $TotalCount) Set Number of modifiable parameters supported by the current instance.
 * @method string getRequestId() Obtain The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 * @method void setRequestId(string $RequestId) Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 */
class DescribeInstanceParamsResponse extends AbstractModel
{
    /**
     * @var array Collection of parameters whose values are of the Enum type.
     */
    public $InstanceEnumParam;

    /**
     * @var array Collection of parameters whose values are of the Integer type.
     */
    public $InstanceIntegerParam;

    /**
     * @var array Collection of parameters whose values are of the Text type.
     */
    public $InstanceTextParam;

    /**
     * @var array Collection of parameters whose values are of different types.
     */
    public $InstanceMultiParam;

    /**
     * @var integer Number of modifiable parameters supported by the current instance.
     */
    public $TotalCount;

    /**
     * @var string The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public $RequestId;

    /**
     * @param array $InstanceEnumParam Collection of parameters whose values are of the Enum type.
     * @param array $InstanceIntegerParam Collection of parameters whose values are of the Integer type.
     * @param array $InstanceTextParam Collection of parameters whose values are of the Text type.
     * @param array $InstanceMultiParam Collection of parameters whose values are of different types.
     * @param integer $TotalCount Number of modifiable parameters supported by the current instance.
     * @param string $RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("InstanceEnumParam",$param) and $param["InstanceEnumParam"] !== null) {
            $this->InstanceEnumParam = [];
            foreach ($param["InstanceEnumParam"] as $key => $value){
                $obj = new InstanceEnumParam();
                $obj->deserialize($value);
                array_push($this->InstanceEnumParam, $obj);
            }
        }

        if (array_key_exists("InstanceIntegerParam",$param) and $param["InstanceIntegerParam"] !== null) {
            $this->InstanceIntegerParam = [];
            foreach ($param["InstanceIntegerParam"] as $key => $value){
                $obj = new InstanceIntegerParam();
                $obj->deserialize($value);
                array_push($this->InstanceIntegerParam, $obj);
            }
        }

        if (array_key_exists("InstanceTextParam",$param) and $param["InstanceTextParam"] !== null) {
            $this->InstanceTextParam = [];
            foreach ($param["InstanceTextParam"] as $key => $value){
                $obj = new InstanceTextParam();
                $obj->deserialize($value);
                array_push($this->InstanceTextParam, $obj);
            }
        }

        if (array_key_exists("InstanceMultiParam",$param) and $param["InstanceMultiParam"] !== null) {
            $this->InstanceMultiParam = [];
            foreach ($param["InstanceMultiParam"] as $key => $value){
                $obj = new InstanceMultiParam();
                $obj->deserialize($value);
                array_push($this->InstanceMultiParam, $obj);
            }
        }

        if (array_key_exists("TotalCount",$param) and $param["TotalCount"] !== null) {
            $this->TotalCount = $param["TotalCount"];
        }

        if (array_key_exists("RequestId",$param) and $param["RequestId"] !== null) {
            $this->RequestId = $param["RequestId"];
        }
    }
}
